import smtplib
from email.header import Header
from email.mime.text import MIMEText


class SendingEmails:
    def __init__(self, from_addr, to_addr, smtp_server, smtp_port, password):
        """
        初始化发件人、收件人、SMTP服务器和端口以及密码。

        这些属性用于配置电子邮件的发送参数。

        参数:
        from_addr: 发件人邮箱地址。
        to_addr: 收件人邮箱地址。
        smtp_server: SMTP服务器地址。
        smtp_port: SMTP服务器端口。
        password: 发件人邮箱的授权密码。
        """
        self.from_addr = from_addr
        self.to_addr = to_addr
        self.smtp_server = smtp_server
        self.smtp_port = smtp_port
        self.password = password


    def send_html_email(self, subject, content):
        """
        发送HTML格式的电子邮件。

        使用SMTP_SSL建立安全连接，登录邮箱，然后发送邮件。如果发送成功，打印成功消息；如果发送失败，打印失败原因。

        参数:
        subject - 邮件主题。
        content - 邮件正文，以HTML格式提供。
        """
        # 创建MIMEText对象，设置内容类型为HTML，编码为UTF-8
        msg = MIMEText(content, 'html', 'utf-8')

        # 设置邮件的发件人、收件人和主题
        msg['From'] = Header(self.from_addr)
        msg['To'] = Header(self.to_addr)
        msg['Subject'] = Header(subject)

        try:
            # 初始化SMTP_SSL客户端，指定邮箱服务器和端口
            smtp_server = smtplib.SMTP_SSL(self.smtp_server, self.smtp_port)
            # 登录邮箱
            smtp_server.login(self.from_addr, self.password)
            # 发送邮件
            smtp_server.sendmail(self.from_addr, self.to_addr, msg.as_string())
            # 关闭SMTP连接
            smtp_server.quit()
            # 邮件发送成功，打印提示信息
            print('邮件发送成功')
        except smtplib.SMTPException as e:
            # 邮件发送失败，打印失败信息和异常详情q
            print('邮件发送失败', e)


# if __name__ == '__main__':
#     s = SendingEmails(
#         from_addr='2165259001@qq.com',
#         to_addr='wjn2165259001@163.com',
#         smtp_server='smtp.qq.com',
#         smtp_port=465,
#         password='kqrdlunyyeuqdjic'
#     )
#
#     sub = 'html文件'
#     html_file = """
#     # <a href="https://www.jd.com">京东商城</a>
#     # """
#
#     s.send_html_email(sub, html_file)

















